// 申明一个接口：IPerson
// 推荐：接口的声明，使用I开头。
interface IPerson {
    name: string,
    age: number,
    sayHello: ()=>string,
}

var customer:IPerson = { 
    name: "罗佰君",
    age: 20,
    sayHello: ():string => {return "罗佰君向大家问好！"} 
} 

var customer2:IPerson = { 
    name: "孙孜子措",
    age: 20,
    sayHello: ():string => {return "子措向大家问好！"} 
} 


function showPerson(person:IPerson):string {
    console.log(`大家好，我是${person.name},我今年${person.age}岁了！`);
    return person.sayHello();
}

showPerson(customer);
showPerson(customer2);


// 接口作业：
//  声明一个IAnimal接口，有name属性，和cry方法
//  定义一个实现了接口的小猫对象，它喵喵叫。
//  定义一个实现了接口的小狗对象，它汪汪叫。
//  定义一个方法，要求传入动物，没有返回，然后打印“我是XXX”，之后再调用cry方法
interface IAnimal {
    name: string,
    cry: () => void,
}

let cat:IAnimal = {
    name: "小猫",
    cry: ():void => {
        console.log("喵喵喵！");
    }
}

let dog:IAnimal = {
    name: "小狗",
    cry: ():void => {
        console.log("汪汪汪！");
    }
}

function testAnimal(a:IAnimal):void {
    console.log("我是：",a.name);
    a.cry();
}

testAnimal(cat);
testAnimal(dog);

